from django.db import models
from django.contrib import admin
from django.utils.timezone import now
from user.models import User
from events.models import Event

# TMgold TMgoldToEvent AllGold
# 虚拟币-时之砂砾：每个用户注册或充值后，对应生成10个时光砂砾，存储每个货币的当前价值，关联外键拥有者，拥有者所有的货币累加值为拥有者的剩余金币
class TMgold(models.Model):
    """
    虚拟币-时之砂砾：每个用户注册或充值后，对应生成50个时光砂砾，存储每个货币的当前价值，关联外键拥有者，拥有者所有的货币累加值为拥有者的剩余金币
    """
    del_choices = (('0', '未删除'),('1', '已删除'))
    way_choices = (('0', '注册'),('1', '充值'))

    way = models.CharField(max_length=1, verbose_name='初始来源', help_text='初始来源（CharField，可选值：0，1）', choices=del_choices, default='0')
    value = models.CharField(max_length=3, verbose_name='剩余价值', help_text='剩余价值（CharField）0.9^usetime',default='1')
    usetime= models.PositiveSmallIntegerField(verbose_name='使用次数',help_text='使用次数（ForeignKey）', null=True, blank=True)
    lastuser = models.ForeignKey(User,verbose_name='上一拥有者ID',help_text='上一拥有者ID（ForeignKey）', null=True, blank=True, on_delete=models.SET_NULL, related_name='lastuser')
    
    created_by = models.ForeignKey(User,verbose_name='初始拥有者ID',help_text='初始拥有者ID（ForeignKey）', null=True, blank=True, on_delete=models.SET_NULL, related_name='TMgold_createdby')
    created_date = models.DateTimeField(verbose_name='获得时间', help_text='获得时间（DateTimeField）', null=True, blank=True, auto_now_add=True)
    last_edited_by = models.ForeignKey(User,verbose_name='当前拥有者ID',help_text='当前拥有者ID（ForeignKey）', null=True, blank=True, on_delete=models.SET_NULL, related_name='TMgold_lasteditedby')
    last_edited_date = models.DateTimeField(verbose_name='最后交易时间', help_text='最后交易时间（DateTimeField）', null=True, blank=True, auto_now=True)
    deleted = models.CharField(max_length=1, verbose_name='是否删除', help_text='是否删除（CharField，可选值：0，1）', choices=del_choices, default='0')
    class Meta:
        ordering = ['-id']
        verbose_name = '虚拟币-时之砂砾'
        verbose_name_plural = verbose_name
    def __str__(self):
        return str(self.id)+'-'+str(self.value)
@admin.register(TMgold)
class TMgoldAdminModel(admin.ModelAdmin):
    list_per_page = 20
    list_display = ('id', 'way', 'value','usetime','lastuser' ,'created_by', 'created_date', 'last_edited_by', 'last_edited_date', 'deleted')

# 事件链-时之光轮：每个事件的创建完结会对应生成一个绳结记事，关联外键时之砂砾，每次一个光轮完结拥有者变更，这个流动的时之砂砾当前价值*0.9存入时之砂砾的属性中
class TMgoldToEvent(models.Model):
    """
    事件链-时之光轮：每个事件的创建完结会对应生成一个绳结记事，关联外键时之砂砾，每次一个光轮完结拥有者变更，这个流动的时之砂砾当前价值*0.9存入时之砂砾的属性中
    """
    del_choices = (('0', '未删除'),('1', '已删除'))
    state_choices = (('0', '发起'), ('1', '进行中'), ('2', '已完成'))
    state = models.CharField(max_length=1, verbose_name='当前状态',help_text='当前状态（CharField，可选值：0，1，2）', choices=state_choices, default='0')

    gold = models.ForeignKey('TMgold',verbose_name='金币',help_text='金币（ForeignKey）', null=True, blank=True, on_delete=models.SET_NULL)
    event = models.ForeignKey(Event,verbose_name='事件',help_text='事件（ForeignKey）', null=True, blank=True, on_delete=models.SET_NULL)

    created_by = models.ForeignKey(User,verbose_name='创建人ID',help_text='创建ID（ForeignKey）', null=True, blank=True, on_delete=models.SET_NULL, related_name='TMgoldToEvent_createdby')
    created_date = models.DateTimeField(verbose_name='创建时间', help_text='创建时间（DateTimeField）', null=True, blank=True, auto_now_add=True)
    last_edited_by = models.ForeignKey(User,verbose_name='编辑人ID',help_text='编辑人ID（ForeignKey）', null=True, blank=True, on_delete=models.SET_NULL, related_name='TMgoldToEvent_lasteditedby')
    last_edited_date = models.DateTimeField(verbose_name='最后编辑时间', help_text='最后编辑时间（DateTimeField）', null=True, blank=True, auto_now=True)
    deleted = models.CharField(max_length=1, verbose_name='是否删除', help_text='是否删除（CharField，可选值：0，1）', choices=del_choices, default='0')
    class Meta:
        ordering = ['-id']
        verbose_name = '事件链-时之光轮'
        verbose_name_plural = verbose_name
    def __str__(self):
        return str(self.gold)+'-'+str(self.event)
@admin.register(TMgoldToEvent)
class TMgoldToEventAdminModel(admin.ModelAdmin):
    list_per_page = 20
    list_display = ('id', 'state', 'gold','event', 'created_by', 'created_date', 'last_edited_by', 'last_edited_date', 'deleted')

# 公共盘-时之沙漏：存储所有金币价值数据，或者不写直接用统计，所有用户所有的金币累加值为总盘的剩余，用户的增加和充值可以补充消耗，当有消耗又没有新用户和充值时，消耗的是创建者初始投入的资源，资源消耗殆尽则项目死亡
class AllGold(models.Model):
    del_choices = (('0', '未删除'),('1', '已删除'))

    nowvalue = models.PositiveIntegerField(verbose_name='总剩余价值',help_text='总剩余价值（ForeignKey）', null=True, blank=True)

    created_by = models.ForeignKey(User,verbose_name='创建人ID',help_text='创建ID（ForeignKey）', null=True, blank=True, on_delete=models.SET_NULL, related_name='AllGold_createdby')
    created_date = models.DateTimeField(verbose_name='创建时间', help_text='创建时间（DateTimeField）', null=True, blank=True, auto_now_add=True)
    last_edited_by = models.ForeignKey(User,verbose_name='编辑人ID',help_text='编辑人ID（ForeignKey）', null=True, blank=True, on_delete=models.SET_NULL, related_name='AllGold_lasteditedby')
    last_edited_date = models.DateTimeField(verbose_name='最后编辑时间', help_text='最后编辑时间（DateTimeField）', null=True, blank=True, auto_now=True)
    deleted = models.CharField(max_length=1, verbose_name='是否删除', help_text='是否删除（CharField，可选值：0，1）', choices=del_choices, default='0')
    class Meta:
        ordering = ['-id']
        verbose_name = '公共盘-时之沙漏'
        verbose_name_plural = verbose_name
    def __str__(self):
        return str(self.nowvalue)
@admin.register(AllGold)
class AllGoldAdminModel(admin.ModelAdmin):
    list_per_page = 20
    list_display = ('id', 'nowvalue', 'created_by', 'created_date', 'last_edited_by', 'last_edited_date', 'deleted')